The development of the EDVAC computer system of 1948 is often cited as the beginning of the computer era. Since that time, computer systems have evolved into extremely sophisticated devices, and computer systems may be found in many different settings. Computer systems typically include a combination of hardware, such as semiconductors and circuit boards, and software, also known as computer programs. As advances in semiconductor processing and computer architecture push the performance of the computer hardware higher, more sophisticated and complex computer software has evolved to take advantage of the higher performance of the hardware, resulting in computer systems today that are much more powerful than just a few years ago.
Years ago, computers were isolated devices that did not communicate with each other. But, today computers are often connected in networks, such as the Internet or World Wide Web, and a user at one computer, often called a client, may wish to access information at multiple other computers, often called servers, via a network. Accessing and using information from multiple computers is often called distributed computing. Since these multiple computers may be using different software that runs on different hardware, distributing computing is a challenging and complex environment.
One way to address the difficult problems of distributed computing is to use the Enterprise JavaBeans (EJB) specification, which provides for creating server-side scalable, transactional, multi-user, secure enterprise-level applications. The Enterprise JavaBeans specification provides a consistent component architecture framework for creating distributed applications.
According to the EJB specification, Enterprise Beans are building blocks that either can be used alone or with other enterprise beans to build complete, robust, thin-client multi-tiered applications. An EJB is a body of code with fields and methods to implement modules of business logic. An EJB can either be transient or persistent.
When an EJB application needs to use the services of an enterprise Bean, it creates the EJB through its Home interface. The application specifically uses one of the multiple create( ) methods that the Home interface defines. The implementation of the Home interface is done through an object called the Home object. An instance of this Home object is created within the server and is made available to the application as a factory for creating the enterprise Bean.
When an EJB application is started, a reference object for the EJB Home object corresponding to each type of EJB within the application must be placed (bound) into a data structure called a name space, which makes it available for lookup operations from users of that type of EJB. A reference object is a type of pointer object that is used to gain access to an associated target object, which in this example is the Home object. Referencing the Home object requires that the actual target object of that type be loaded and instantiated in the application server and then registered with the Object Request Broker (ORB), which in turn creates the reference object.
Since a large EJB application may include hundreds of EJB types, only a portion of which might actually be used during the execution of the application, loading and instantiating each one of the hundreds of the EJB types at application startup can cause performance degradation of the EJB application.
Without a better way to handle references to objects, users will continue to suffer from degraded performance. Although the aforementioned problems have been described in the context of Enterprise JavaBeans and Home objects, they may occur in the CORBA (Common Object Request Broker Architecture) environment or any other appropriate context, and they may occur for any appropriate type of target object.